import api from '@/services/api';

/**
 * 用户相关API接口封装
 */
const userApi = {
  /**
   * 获取用户列表（带分页和过滤）
   * @param {number} currentPage - 当前页码
   * @param {number} pageSize - 每页条数
   * @param {object} filterForm - 过滤条件
   * @returns {Promise} - 返回用户列表数据
   */
  getUsers: async (currentPage, pageSize, filterForm) => {
    try {
      const response = await api.get(`/user/page/${currentPage}/${pageSize}`, {
        params: {
          ...filterForm
        }
      });
      return response.data;
    } catch (error) {
      console.error('获取用户列表失败:', error);
      throw error;
    }
  },

  /**
   * 根据用户名获取用户
   * @param {string} username - 用户名
   * @returns {Promise} - 返回用户数据
   */
  getUserByUsername: async (username) => {
    try {
      const response = await api.get(`/user/name/${username}`);
      return response.data;
    } catch (error) {
      console.error('获取用户失败:', error);
      throw error;
    }
  },

  /**
   * 根据角色获取用户
   * @param {string} role - 用户角色
   * @returns {Promise} - 返回用户列表数据
   */
  getUsersByRole: async (role) => {
    try {
      const response = await api.get(`/user/role/${role}`);
      return response.data;
    } catch (error) {
      console.error('获取用户失败:', error);
      throw error;
    }
  },

  /**
   * 根据状态获取用户
   * @param {number} status - 用户状态
   * @returns {Promise} - 返回用户列表数据
   */
  getUsersByStatus: async (status) => {
    try {
      const response = await api.get(`/user/status/${status}`);
      return response.data;
    } catch (error) {
      console.error('获取用户失败:', error);
      throw error;
    }
  },

  /**
   * 添加用户
   * @param {object} userData - 用户数据
   * @returns {Promise} - 返回操作结果
   */
  addUser: async (userData) => {
    try {
      const response = await api.post('/user/add', userData);
      return response.data;
    } catch (error) {
      console.error('添加用户失败:', error);
      throw error;
    }
  },

  /**
   * 更新用户
   * @param {string} userId - 用户ID
   * @param {object} userData - 用户数据
   * @returns {Promise} - 返回操作结果
   */
  updateUser: async (userId, userData) => {
    try {
      const response = await api.put(`/user/update/${userId}`, userData);
      return response.data;
    } catch (error) {
      console.error('更新用户失败:', error);
      throw error;
    }
  },

  /**
   * 删除用户
   * @param {string} userId - 用户ID
   * @returns {Promise} - 返回操作结果
   */
  deleteUser: async (userId) => {
    try {
      const response = await api.delete(`/user/delete/${userId}`);
      return response.data;
    } catch (error) {
      console.error('删除用户失败:', error);
      throw error;
    }
  },

  /**
   * 修改用户状态
   * @param {string} userId - 用户ID
   * @param {number} status - 新状态
   * @param {object} userData - 其他用户数据
   * @returns {Promise} - 返回操作结果
   */
  changeUserStatus: async (userId, status, userData) => {
    try {
      const response = await api.put(`/user/update/${userId}`, {
        ...userData,
        status
      });
      return response.data;
    } catch (error) {
      console.error('修改用户状态失败:', error);
      throw error;
    }
  },

  /**
   * 重置用户密码
   * @param {string} userId - 用户ID
   * @param {string} newPassword - 新密码
   * @returns {Promise} - 返回操作结果
   */
  resetPassword: async (userId, newPassword) => {
    try {
      const response = await api.put(`/user/update/${userId}`, {
        password: newPassword
      });
      return response.data;
    } catch (error) {
      console.error('重置密码失败:', error);
      throw error;
    }
  }
};

export default userApi;